package 注解学习;

import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Properties;

@SuppressWarnings("all")
@Pro(className = "po.Person", methodName = "eat")
public class 注解获取配置文件案例 {
    public static void main(String[] args) throws Exception {
        //解析注解
        //获取该类的字节码文件对象
        Class<注解获取配置文件案例> cls = 注解获取配置文件案例.class;
        //获取上面的注解对象
        Pro an = cls.getAnnotation(Pro.class);
        //上面这个过程就是在内存中生成了一个注解的实现对象
        //调用注解对象中定义的抽象方法
        String s = an.className();
        String s1 = an.methodName();
        System.out.println(s);
        System.out.println(s1);

        //获取类对象,将该类加载进内存
        Class cls1 = Class.forName(s);
        //创建对象
        Object o = cls1.newInstance();
        //获取方法对象
        Method method = cls1.getMethod(s1);
        //运行方法
        method.invoke(o, "shi");
    }
}
